hhkb
모의해킹

호스트기반모의해킹_08_취약점 분석 개요

작성자 : Heehyeon Yoo|2025-11-20
# 모의해킹# 취약점# Exploit# Payload# CVE

1. 기본 개념 정의

취약점 진단은 포트/서비스 스캐닝 결과를 바탕으로, 대상 호스트에 존재하는 보안 결함(Security Flaw)을 식별하는 과정이다.

1.1 용어의 구분

  • 취약점(Vulnerability): 시스템의 무결성, 기밀성, 가용성을 침해할 수 있는 설계상/구현상의 결함.
    • 예: 코드 버그, 잘못된 설정(Misconfiguration).
  • 익스플로잇(Exploit): 취약점을 이용하여 공격자가 의도한 동작을 수행하게 만드는 공격 코드나 절차.
    • 비유: 미사일의 '추진체(Rocket)'.
  • 페일로드(Payload): 시스템 침투 후 실제로 실행되는 악성 행위 코드.
    • 비유: 미사일의 '탄두(Warhead)'.(예: 리버스 쉘 연결, 랜섬웨어 실행)

2. 공격과 취약점의 모호성

"버퍼 오버플로우(Buffer Overflow)"는 공격인가, 취약점인가?

  • 둘 다 맞다.
  • 취약점 관점: "이 프로그램은 버퍼 오버플로우 취약점을 가지고 있다."(원인)
  • 공격 관점: "공격자가 버퍼 오버플로우 공격을 수행했다."(행위)
  • 특히 DoS(서비스 거부)의 경우, 근본 원인(코드 버그, 자원 부족, 미들웨어 오류 등)을 특정하기 어려울 때 현상 자체를 취약점으로 기술하기도 한다.

3. 주요 취약점 유형

모의해킹에서 자주 다루는 치명적인 취약점 5가지.

3.1 원격 코드 실행(Remote Code Execution, RCE)

  • 정의: 공격자가 원격에서 대상 시스템의 쉘(Shell) 명령어난 스크립트를 실행할 수 있는 취약점.
  • 위험도: 최상(Critical). 시스템 장악과 직결된다.

3.2 인증 우회(Authentication Bypass)

  • 정의: 정상적인 로그인 절차를 거치지 않고 사용자 또는 관리자 권한을 획득하는 취약점.
  • 예시: SQL Injection을 통한 로그인 우회, 취약한 세션 관리.

3.3 정보 노출(Information Disclosure)

  • 정의: 민감한 정보(소스코드, 설정 파일, 고객 데이터 등)가 인가받지 않은 사용자에게 노출되는 취약점.
  • 영향: 2차 공격(RCE 등)을 위한 발판 정보(Credential)로 악용될 수 있다.

3.4 경로 탐색(Path Traversal)

  • 정의: 웹 애플리케이션 등에서 디렉토리 이동 문자(../)를 필터링하지 않아, 허용된 경로 밖의 시스템 파일(/etc/passwd 등)에 접근하는 취약점.

3.5 서비스 거부(Denial of Service, DoS)

  • 정의: 시스템 자원을 고갈시키거나 프로세스를 강제 종료시켜 가용성을 마비시키는 취약점.
  • 실무 주의: 모의해킹 현장에서는 서비스 중단 위험 때문에 원칙적으로 금지하거나, 사전 협의된 별도의 스트레스 테스트(Stress Test) 기간에만 수행한다.

4. 인증 컨텍스트

취약점은 "누가 공격할 수 있는가?"에 따라 심각도가 달라진다.

4.1 인증된 상황(Authenticated)

  • 조건: 공격자가 시스템의 유효한 계정(ID/PW)을 가지고 있어야만 악용 가능한 경우.
  • 시나리오: "내부 직원"이나 "탈취된 계정"을 가정한 위협.
  • 복잡도: 공격 전 계정 탈취(Credential Harvesting) 과정이 선행되어야 한다.

4.2 미인증 상황(Unauthenticated)

  • 조건: 계정 없이 외부의 램덤한 공격자가 즉시 악용 가능한 경우.
  • 위험도: 훨씬 더 위험함. 인터넷에 노출된 순간 누구나 공격 가능하다.
    • 예: Log4Shell, MS17-010(EternalBlue) 등 역사적인 대형 사고들은 대부분 Unauthenticated RCE였다.

5. 실무에서는?

"RCE가 만능은 아니다."

  • 복잡한 힙 오버플로우 RCE를 짜느라 3일을 쓰는 것보다, 단순 정보 노출로 얻은 SSH 키로 1분 만에 로그인하는 것이 더 효율적일 수 있다.
  • 목표 지향적 사고: 취약점은 도구일 뿐이다. 여러 취약점(Chain)을 조합하여 최종 목표(시스템 장악, 데이터 유출)를 가장 쉽고 빠르게 달성하는 경로를 설계해야 한다.